The present invention relates generally to the field of computer and information processing and more specifically to a system for predictably allocating computing resources within a multi-processor (as opposed to a single processor) computing environment.
Conventional systems for allocating resources are generally known. Resource allocation issues arise in a broad range of industrial and technological areas such as routing of data in communication channels, inventory control and operation management for example. As used herein, resource allocation refers to allocation of memory and other processor resources within a multi-processor computing environment in order to optimize data transfer.
The importance of resource allocation in multi-processor environments cannot be overemphasized. A demand for increased processing power provided by multiple-processor systems currently exists. In parallel computing for example, a plurality of processors are utilized for increased processing power. However, because availability is limited, the plurality of processors must share the limited computing resources. Without resource allocation between the various processors, problems of resource contention and deadlock could arise, virtually shutting down the computing system.
Conventional systems for allocating memory in multi-processor systems are generally known to follow the paradigm in single processor environments. In an IRQ/ISR model for example, resource allocation is reactive. A task requiring a resource must request the resource before it is allocated. By way of example, a program desiring 100 k of memory buffer must typically request the memory from a processor. The request is then granted by the processor in conjunction with a memory controller. Disadvantageously, the processor must stop its current activity to service the request such that a bottleneck for data transfer is created. This static memory allocation scheme may significantly degrade performance in a multi-processor computing environment.
This paradigm makes little or no sense in a multi-processor computing environment where tasks are executed in parallel such that a first process and a second process are run simultaneously by a first and a second processor, respectively. Sometimes the second processor may need to wait for results from the first processor in order to continue processing. At other times however, resource allocation occurs in a manner wherein although the first and second processors are independent of each other, each processor must request and thereafter await receipt of computing resources. Each processor is inhibited from beginning or continuing processing if there are no resources when needed. Only after the computing resources are allocated can further processing continue.
Another disadvantage of conventional systems is that computing resources are typically allocated in advance of execution of the task that requests the computing resource. If memory space is required by the first processor, the memory space is immediately allocated even though it not needed until sometime later. In so far as the memory space is occupied prior to need and after execution, such prior resource allocation is wasteful as the space cannot be allocated to other processes. The memory space is only needed during execution of the program not before or after.
A further disadvantage of conventional multi-processor system is that all of the processors in the system perform resource allocation services. This provides for inefficiency since in addition to other tasks to be performed, each processor is burdened with the responsibility of resource allocation.
Therefore, there is a need to resolve the aforementioned disadvantages specific to multi-processor computing environments and the present invention meets this need.